package userInterfaces;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import managerBean.PacchettoManagerBean;
import model.Escursione;
import model.Hotel;
import model.Pacchetto;
import model.Volo;

@ManagedBean(name="PacchettoManagedBean")
@ViewScoped
public class PacchettoManagedBean {

	@EJB
	private PacchettoManagerBean packMgrBean;
	
	private Pacchetto pacchettoCorrente=new Pacchetto();
		
	private List<Pacchetto> pacchetti;
	
	private List<Volo> voli;
	
	private List<Hotel> hotels;
	
	private List<Escursione> escursioni;
	
	private String cerca;
	
	private int idVoloAndata;
	
	private int idVoloRitorno;
	
	private String nome;
	
	private int numeroPersone;	
	
	private int idPersonalizzato;
	
	public PacchettoManagedBean() {
		super();
		this.voli = new ArrayList<Volo>();
		this.hotels = new ArrayList<Hotel>();
		this.escursioni = new ArrayList<Escursione>();
		this.cerca = "inserisci nome";
	}
	
	public int getIdPersonalizzato() {
		return idPersonalizzato;
	}

	public void setIdPersonalizzato(int idPersonalizzato) {
		this.idPersonalizzato = idPersonalizzato;
	}

	public List<Hotel> getHotels() {
		return hotels;
	}

	public void setHotels(List<Hotel> hotels) {
		this.hotels = hotels;
	}

	public List<Escursione> getEscursioni() {
		return escursioni;
	}

	public void setEscursioni(List<Escursione> escursioni) {
		this.escursioni = escursioni;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public int getNumeroPersone() {
		return numeroPersone;
	}

	public void setNumeroPersone(int numeroPersone) {
		this.numeroPersone = numeroPersone;
	}

	public List<Volo> getVoli() {
		return voli;
	}

	public void setVoli(List<Volo> voli) {
		this.voli = voli;
	}

	public int getIdVoloAndata() {
		return idVoloAndata;
	}

	public void setIdVoloAndata(int idVoloAndata) {
		this.idVoloAndata = idVoloAndata;
	}

	public int getIdVoloRitorno() {
		return idVoloRitorno;
	}

	public void setIdVoloRitorno(int idVoloRitorno) {
		this.idVoloRitorno = idVoloRitorno;
	}

	public Pacchetto getPacchettoCorrente() {
		return pacchettoCorrente;
	}

	public void setPacchettoCorrente(Pacchetto pacchettoCorrente) {
		this.pacchettoCorrente = pacchettoCorrente;
	}

	public List<Pacchetto> getPacchetti() {
		return pacchetti;
	}

	public void setPacchetti(List<Pacchetto> pacchetti) {
		this.pacchetti = pacchetti;
	}

	public String getCerca() {
		return cerca;
	}

	public void setCerca(String cerca) {
		this.cerca = cerca;
	}

	public void visualizzaPacchetti(){
		this.pacchetti=packMgrBean.visualizzaPacchettiMgr();
	}
	
	public void cercaPacchetti(){
		this.pacchetti=packMgrBean.cercaPacchettiMgr(this.cerca);
	}
	
	public void cercaPacchettiPers(){
		this.pacchetti=packMgrBean.cercaPacchettiPersMgr(this.idPersonalizzato);
	}
	
	public void aggiungiAWishlist(int idPacchetto){
		packMgrBean.aggiungiAWishlistMgr(idPacchetto);
	}
	
	public void aggiungiACarrello(int idPacchetto){
		packMgrBean.aggiungiACarrelloMgr(idPacchetto);
	}
	
	public void visualizzaVoli(){
		this.voli=packMgrBean.visualizzaVoliMgr();
	}
	
	public void cercaVoli(){
		this.voli=packMgrBean.cercaVoliMgr(this.cerca);
	}
	
	public void creaPacchetto(){
		if (idVoloAndata!=0 && idVoloRitorno!=0)
			packMgrBean.creaPacchettoMgr(this.nome,this.numeroPersone,this.idVoloAndata,this.idVoloRitorno);
	}
	
	public void modificaPacchettoCorrente(Pacchetto pacchettoCorrente) throws IOException {
		this.setPacchettoCorrente(pacchettoCorrente);
		FacesContext.getCurrentInstance().getExternalContext().dispatch("./modificaPacchetto.xhtml");
	}
	
	public void visualizzaPacchetto(){
		int idPacchetto=this.pacchettoCorrente.getIdPacchetto();
		this.hotels=packMgrBean.getHotelPacchettoMgr(idPacchetto);
		this.voli=packMgrBean.getVoliPacchettoMgr(idPacchetto);		
		this.escursioni=packMgrBean.getEscursioniPacchettoMgr(idPacchetto);		
	}
	
	public void rimuoviHotel(int idHotel){
		packMgrBean.rimuoviHotelMgr(this.pacchettoCorrente.getIdPacchetto(),idHotel);
		this.visualizzaPacchetto();
	}
	
	public void rimuoviVolo(int idVolo){
		packMgrBean.rimuoviVoloMgr(this.pacchettoCorrente.getIdPacchetto(),idVolo);
		this.visualizzaPacchetto();
	}
	
	public void rimuoviEscursione(int idEscursione){
		packMgrBean.rimuoviEscursioneMgr(this.pacchettoCorrente.getIdPacchetto(),idEscursione);
		this.visualizzaPacchetto();
	}
	
	public void rimuoviPacchetto(int idPacchetto){
		packMgrBean.rimuoviPacchettoMgr(idPacchetto);
		this.visualizzaPacchetto();
	}

}
